package main

import (
	"reflect"
)

/*
有效的字母异位词
给定两个字符串 s 和 t ，编写一个函数来判断 t 是否是 s 的字母异位词。

注意：若s 和 t中每个字符出现的次数都相同，则称s 和 t互为字母异位词。
*/

//比较map
func isAnagram(s string, t string) bool {
	s1:=map[string]int{}
	t1:=map[string]int{}
	for _,j :=range s{
		s1[string(j)]++
	}
	for _,j :=range t{
		t1[string(j)]++
	}
	return reflect.DeepEqual(s1,t1)
}

//排序
/*
func isAnagram(s, t string) bool {
	s1, s2 := []byte(s), []byte(t)
	sort.Slice(s1, func(i, j int) bool { return s1[i] < s1[j] })
	sort.Slice(s2, func(i, j int) bool { return s2[i] < s2[j] })
	return string(s1) == string(s2)
}
 */

//哈希表(数组)比较
/*
func isAnagram(s, t string) bool {
    var c1, c2 [26]int
    for _, ch := range s {
        c1[ch-'a']++
    }
    for _, ch := range t {
        c2[ch-'a']++
    }
    return c1 == c2
}
 */


func main() {
	s:="abcdefg"
	t:="bcadefg"
	isAnagram(s,t)
}
